package org.example.startup;

import org.example.dao.BudgetDAO;
import org.example.gui.frame.MainFrame;
import org.example.gui.panel.MainPanel;
import org.example.gui.panel.SpendPanel;
import org.example.util.GUIUtil;
import org.example.util.SQLUtil;

import javax.swing.*;

/**
 * 启动类 Bootstrap
 * main为本程序的总入口
 * 会加载一个 MainFrame 程序窗体 和 一个 MainPanel 程序 主面板 ，并且初始化 MainPanel 中的 workingPanel
 * workingPanel有方法 .show(WorkingPanel p) 可以居中显示子面板 并 更新数据
 * 使用swing的阻塞机制，优先加载整个启动窗口
 */
public class Bootstrap {
    static {
        // 如果没有数据库，那么创建数据库
        SQLUtil.createDatabase();
        // 如果数据库没有预算数据，那么初始化预算
        BudgetDAO.init();
    }

    public static void main(String[] args) throws Exception {
        SQLUtil.createDatabase();
        GUIUtil.useFlatLightLaf();      // UI风格设置
        SwingUtilities.invokeAndWait(() -> {
            MainFrame.instance.setVisible(true);
            //居中显示子面板 并 更新数据
            MainPanel.instance.workingPanel.show(SpendPanel.instance);
        });
    }
}
